Compte Google
moussa Bakayoko
moussabakayoko098@gmail.com
Notebook
Code Texte

!pip install tensorflow
Afficher la sortie masquée
Code Texte

!pip show tensorflow

Afficher la sortie masquée
Code Texte

# Importer les bibliothèques nécessaires pour le prétraitement des données
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split

# Importer TensorFlow et les composants nécessaires pour créer le modèle de réseau de neurones
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, BatchNormalization
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau

import matplotlib.pyplot as plt

# Étape d'importation terminée. 
# Passons à l'étape suivante : Prétraitement des données.

Code Texte

# Importer TensorFlow pour vérifier si l'installation est bien reconnue
import tensorflow as tf

# Afficher la version de TensorFlow pour confirmer l'importation réussie
print("Version de TensorFlow :", tf.__version__)

Version de TensorFlow : 2.17.1
Code Texte

# Charger le fichier CSV contenant les données
from google.colab import files
uploaded = files.upload("/Users/bakayokomoussa/Downloads/Project_PythonIA_Group_IPSSI-main/cars.csv")

Code Texte

uploaded
Afficher la sortie masquée
Code Texte

data = pd.read_csv(list(uploaded.keys())[0])
Code Texte

data
Afficher la sortie masquée
Code Texte

# Afficher un aperçu des données pour comprendre leur structure
data.head()
Afficher la sortie masquée
Code Texte

# Définir les colonnes numériques et catégorielles
numeric_features = ['mileage', 'hp', 'year']
categorical_features = ['make', 'model', 'fuel', 'gear', 'offerType']

# Pipeline pour les colonnes numériques
numeric_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='mean')),  # Imputer les valeurs manquantes avec la moyenne
    ('scaler', StandardScaler())  # Normaliser les données numériques
])

# Pipeline pour les colonnes catégorielles
categorical_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='most_frequent')),  # Imputer les valeurs manquantes avec la valeur la plus fréquente
    ('onehot', OneHotEncoder(handle_unknown='ignore'))  # Encoder les variables catégorielles
])

# Combiner les transformations
preprocessor = ColumnTransformer(
    transformers=[
        ('num', numeric_transformer, numeric_features),
        ('cat', categorical_transformer, categorical_features)
    ]
)

# Séparer les données en caractéristiques (X) et cible (y)
X = data.drop(columns=['price'])
y = data['price']

# Appliquer les transformations sur les caractéristiques X
X_preprocessed = preprocessor.fit_transform(X)

# Diviser les données en ensembles d'entraînement et de test
X_train, X_test, y_train, y_test = train_test_split(X_preprocessed, y, test_size=0.2, random_state=42)

# Prétraitement terminé.
# Passons à l'étape suivante : Construction du modèle de réseau de neurones.

Code Texte

Code Texte

import matplotlib.pyplot as plt

# Visualisation de la performance du modèle

# Courbe de l'évolution de la perte pendant l'entraînement et la validation
plt.figure(figsize=(12, 6))
plt.plot(history.history['loss'], label='Perte d\'entraînement')
plt.plot(history.history['val_loss'], label='Perte de validation')
plt.xlabel('Époque')
plt.ylabel('Perte')
plt.title('Évolution de la perte pendant l\'entraînement et la validation')
plt.legend()
plt.grid(True)
plt.show()

# Courbe de l'évolution de l'erreur absolue moyenne (MAE) pendant l'entraînement et la validation
plt.figure(figsize=(12, 6))
plt.plot(history.history['mae'], label='MAE d\'entraînement')
plt.plot(history.history['val_mae'], label='MAE de validation')
plt.xlabel('Époque')
plt.ylabel('MAE')
plt.title('Évolution de l\'erreur absolue moyenne pendant l\'entraînement et la validation')
plt.legend()
plt.grid(True)
plt.show()

Code Texte

# Callbacks pour éviter le surapprentissage et améliorer la performance du modèle
callbacks = [
    EarlyStopping(monitor='val_loss', patience=20, restore_best_weights=True, verbose=1),
    ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=10, min_lr=1e-6, verbose=1)
]

# Entraîner le modèle
history = model.fit(X_train, y_train, validation_split=0.2, epochs=150, batch_size=64, callbacks=callbacks, verbose=1)

# Visualisation de la performance

# Courbe de l'évolution de la perte pendant l'entraînement
plt.figure(figsize=(12, 6))
plt.plot(history.history['loss'], label='Perte d\'entraînement')
plt.plot(history.history['val_loss'], label='Perte de validation')
plt.xlabel('Époque')
plt.ylabel('Perte')
plt.title('Évolution de la perte pendant l\'entraînement et la validation')
plt.legend()
plt.grid(True)
plt.show()

# Courbe de l'évolution de l'erreur absolue moyenne (MAE) pendant l'entraînement
plt.figure(figsize=(12, 6))
plt.plot(history.history['mae'], label='MAE d\'entraînement')
plt.plot(history.history['val_mae'], label='MAE de validation')
plt.xlabel('Époque')
plt.ylabel('MAE')
plt.title('Évolution de l\'erreur absolue moyenne pendant l\'entraînement et la validation')
plt.legend()
plt.grid(True)
plt.show()

# Évaluer les performances sur l'ensemble de test
performance = model.evaluate(X_test, y_test, verbose=1)
performance

Afficher la sortie masquée
Code Texte

Ajouter un commentaire